package com.ml.mall.service.company;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ml.mall.bean.base.ApiRestResult;
import com.ml.mall.bean.page.Page;
import com.ml.mall.bean.req.company.*;
import com.ml.mall.bean.res.company.CompanyInfoLevelRes;
import com.ml.mall.bean.res.company.CompanyInfoRes;
import com.ml.mall.bean.res.company.CompanyQueryInfoRes;
import com.ml.mall.bean.res.company.CompanyQueryRes;
import com.ml.mall.entity.company.SysCompany;

import java.util.List;

public interface SysCompanyService extends IService<SysCompany>{



    //根据类型查询对应的公司以及id
    ApiRestResult queryCompanyByType();
    /**
     * @description    :创建公司信息
     * @author         :zxm
     * @date           :2021/5/13
    **/
    ApiRestResult createCompany(CompanyNewDto dto);

    /**
     * @description    :修改公司信息
     * @author         :zxm
     * @date           :2021/5/14
    **/
    ApiRestResult editCompany(CompanyEditDto dto);

    /**
     * @description    :查询单个公司信息
     * @author         :zxm
     * @date           :2021/5/14
    **/
    CompanyQueryInfoRes queryOneCompany(CompanyDto dto);

    /**
     * @description    :分页查询公司信息
     * @author         :zxm
     * @date           :2021/5/14
    **/
    Page<CompanyQueryRes> queryPageCompany(CompanyQueryDto dto);


    /**
     * @description    :注册公司信息
     * @author         :zxm
     * @date           :2021/5/17
    **/
    ApiRestResult registerCompany(CompanyRegisterDto dto);

    /**
     * 保存验证码到redis
     * @param code 验证码  ip 请求ip
     * @return
     * @author Daizh
     * @date 2021/6/22 11:38
     */
    void saveCodeToRedis(String code,String ip);

    Boolean verifyCaptchaCode(String code,String ip);

    /**
     * @description: 发送验证码给邮箱
     * @author kyyang
     * @date 2021/8/2 22:29
     * @version 1.0
     */
    void companyRegisterSendVerificCode(CompanySendVerificCode dto);

    /**
     * @description: 公司删除
     * @author YanXiang
     * @date 2021/8/11 10:56
     * @version 1.0
     */
    int deleteByBatchCompanyIds(List<Long> ids);

    /**
     * @description: 返回卖家当前 所处的阶段；1：账号已经有公司相关的信息；返回1；2：公司已经有产品；有变体 返回2；
     * @author kyyang
     * @date 2021/8/14 16:39
     * @version 1.0
     */
    Integer getCompanySupplierOfStep();

    /**
     * 查询公司信息完整程度
     * @return
     */
    CompanyInfoLevelRes queryInfoLevel();

    //批量查询卖家相关信息
    List<CompanyInfoRes> queryCompanyInfoBatch(List<Long> companyList);

    //修改公司状态
    boolean verify(String emailAddress);
}
